Forum
Herkese selamlar;
İnternet baktım ama tam bulamadım sanırım yapamadım çünkü 🙂
Yazdığımız exe bir program var. Bunu clientlarda ilk başta masaüstüne kopyalayıp çalıştıktan sonra silinmesini istiyorum. otomatik çalışması gerekiyor bunu nasıl sağlarım .
Merhaba.
Bir kereye mahsus mu? Yoksa her açılış/kapanışta mı?
Selamlar her açılış ve kapanışta.
Exe yi server üzerinde paylaşıma koyun. ör: \\ServerName\Folder\App.exe
Login Script:
Copy \\ServerName\Folder\App.exe %userprofile%\desktop
%userprofile%\desktop\app.exe
Logout Script:
tskill app
delete %userprofile%\desktop\app.exe
gibi iki küçük batch file işinizi görecektir.
Bat dosyası yapıcam dimi bunları ?
Evet iki ayrı bat dosyası olacak.
Birisi login sırasında, diğeri logout sırasında çalışacak.
peki bunlarda exe nasıl calisiyor sanki sadece kopyalanıyomuş gibi geldi bana 🙂 logout dada sadece siliyomuş gibi geldi exe sadece 2-3 sn çalışıp kapanacak logout dada aynen sürekli çalışmıcak yani.
Merhaba,
Acaba bu .exe uzantılı dosyayı server üzerinde kullanıcılarda Read and Execute izni verilerek paylaştırılmış bir klasöre kopyalayıp, önceden hazırlamış olduğunuz bir batch file ile de kullanıcıların log on olduğu zaman bu programın çalışmasını sağlamak sorununuzu çözer mi?
Bu şekilde silmeye de gerek kalmayacaktır diye düşünüyorum.
işte o olmuyor yani illa kullanıcının yetkli olduğu bir yere kopyalamam lazım exe yi.
Merhaba,
Aynı mantığı Group Policy ile program kurarken de kullanıyoruz. Orda dosyanın .msi uzantısı olması tek farktır. Önemli olan gerekli izinlerin klasör de olması gerekmektedir.
Acaba paylaşım yapılan klasör başka bir paylaşımın altında da bundan dolayı izinlerde bir sorun mu yaşanıyor?
Bir de bir kere başıma gelmişti, bazen dosyanın path ini doğru yazsanız da sorun çıkabiliyor.Batch ve .exe dosyasına herhangi bir clienttan explorer yardımı ile ulaşıp adres çubuğunda gözüken adresi kopyala yapıştır yaparak yazarsanız daha iyi oluyor.
peki bunlarda exe nasıl calisiyor sanki sadece kopyalanıyomuş gibi geldi bana 🙂 logout dada sadece siliyomuş gibi geldi exe sadece 2-3 sn çalışıp kapanacak logout dada aynen sürekli çalışmıcak yani.
%userprofile%\desktop\app.exe -> İlk bat dosyasındaki bu satır programın çalışmasını sağlıyor
tskill app -> ikinci bat dosyasındaki bu satır programı kapatıyor.
Tabi burada program oturum kapatılana kadar (yani ikinci bat dosyası çalışana kadar) açık durumdadır.
İsteği karşılamak için size özel bir script yazalım. Yanlarına açıklamalarında ekliyorum ki neyin ne iş yaptığı anlaşılsın. Tırnak ile başlayan kısımlar açıklama bölümleri, code içinde sorun yaratmaz. Düzenlemen gereken yerler koyu renkli.
Const OverwriteExisting = TRUE 'Dosya varsa üzerine yazması için fonksiyon
Dim WshShell, userprofile 'değişkenleri tanımladık
Set WshShell = CreateObject("WScript.Shell")
userprofile = WshShell.ExpandEnvironmentStrings("%userprofile%") 'userprofile değişkenine %userprofile% komutunu atadık
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
objFSO.CopyFile "\\ServerName\Share\App.exe" , userprofile & "\desktop\App.exe" , OverwriteExisting 'Paylaşımdaki App.exe yi kullanıcının masaüstüne kopyaladık
objShell.Run("app.exe"), 1, TRUE 'app.exe yi çalıştırdık
wscript.sleep 6000 'code'u 6 saniye durduruyoruz ki app.exe 6 saniye boyunca çalışır durumda kalsın.
strComputer = "." '6sn sonra code devam ediyor ve app.exe yi sonlandırıyor.
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'app.exe'") 'burada app.exe uygulamanın process ismi, yani taskmanager>process tabında görünen isim.
For Each objProcess in colProcessList
objProcess.Terminate()
Next
objFSO.DeleteFile userprofile & "\desktop\App.exe" 'Ve uygulamayı masa üstünden siliyoruz.
Açıklama satırlarıyla biraz karışık olmuş. Aşağıda toparlıyorum.
Dim WshShell, userprofile
Set WshShell = CreateObject("WScript.Shell")
userprofile = WshShell.ExpandEnvironmentStrings("%userprofile%")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
objFSO.CopyFile "\\ServerName\Share\App.exe" , userprofile & "\desktop\App.exe" , OverwriteExisting
objShell.Run("app.exe"), 1, TRUE
wscript.sleep 6000
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'app.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
Next
objFSO.DeleteFile userprofile & "\desktop\App.exe"
Serhat teşekkür ederim.
Şimdi bakıyorum yolladığına bende bişiler karaladım benim kini kontrol edebilirmisin.
@echo off
cls
echo ======================================================
echo please do not close this script during logon or logoff
echo ======================================================
echo creating folder
cd C:\Documents and Settings\%username%\Desktop
md Login
cd login
echo copying AgentLogin.exe
copy \\10.0.0.6\App\App\Login$\AgentLogin.exe
AgentLogin.exe
ping 127.0.0.1 -n 5 >NUL:
rd login /s /q
Login dizinini silerken hata veriyor olmalı çünkü application sonlandırılmamış. RD den önce
tskill agentlogin
şeklinde bir komut ekleyebilirsin.
sanırım programı çalıştırmıyor tskill diyince process bulunamadı diyor.
cls
echo ======================================================
echo please do not close this script during logon or logoff
echo ======================================================
echo creating folder
cd C:\Documents and Settings\%username%\Desktop
md Login
cd Login
echo copying AgentLogin.exe
copy \\10.0.0.6\Login$\AgentLogin.exe .
start /WAIT .\AgentLogin.exe
del AgentLogin.exe
cd ..
rd Login
yukardaki kodlarla işi oldu kolay gelsin yardım eden herkese teşekkürler.
cls
echo ======================================================
echo please do not close this script during logon or logoff
echo ======================================================echo creating folder
cd C:\Documents and Settings\%username%\Desktopmd Login
cd Login
echo copying AgentLogin.exe
copy \\10.0.0.6\Login$\AgentLogin.exe .
start /WAIT .\AgentLogin.exe
del AgentLogin.exe
cd ..
rd Login
yukardaki kodlarla işi oldu kolay gelsin yardım eden herkese teşekkürler.
Geri bildirim için teşekkürler.
Benim sana hazırladığım script çalışıyor, onu kullanabilirsin. En azından ekranda herhangi bir pencere olmayacak, yani kullanıcı cmd ekranı görmeyecek.
Merhaba
Bu scripti her açılış kapanış değilde bir defaya mahsus clintlara kurmak için scriptte neyi değiştirmemiz gerekir.
DAha doğrusu belirli zamanlarda bilgisayarlara bu scrpti kullanarak *.exe çalıştırmak istiyorum gpo startup script i ile bunu yapabilirmiyim. Bu nu yapabileceiğim şekilde scripti nasıl değiştirmem gerekir.
Açıklama satırlarıyla biraz karışık olmuş. Aşağıda toparlıyorum.
Dim WshShell, userprofile
Set WshShell = CreateObject("WScript.Shell")
userprofile = WshShell.ExpandEnvironmentStrings("%userprofile%")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")objFSO.CopyFile "\\ServerName\Share\App.exe" , userprofile & "\desktop\App.exe" , OverwriteExisting
objShell.Run("app.exe"), 1, TRUE
wscript.sleep 6000strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'app.exe'")
For Each objProcess in colProcessList
objProcess.Terminate()
NextobjFSO.DeleteFile userprofile & "\desktop\App.exe"